package com.manage.platform.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
/**
 * 任务预算实体类
 * 对应数据库表：t_task_budget
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("t_task_budget")
@Schema(description = "任务预算实体")
public class TaskBudgetEntity implements Serializable {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    @Schema(description = "主键ID(预算ID)")
    private Long id;

    /**
     * 创建人ID
     */
    @Schema(description = "创建人ID")
    private Long userId;

    /**
     * 任务ID
     */
    @Schema(description = "任务ID")
    private Long taskId;

    /**
     * 年度(默认2025)
     */
    @Schema(description = "年度(默认2025)")
    private String annual;

    // ========== 资金来源部分 ==============================================

    /**
     * 项目年度预算总额(万元)(资金来源)
     */
    @Schema(description = "项目年度预算总额(万元)(资金来源)")
    private BigDecimal totalBudget;

    /**
     * 中央财政投入资金(万元)(资金来源)
     */
    @Schema(description = "中央财政投入资金(万元)(资金来源)")
    private BigDecimal centralFunding;

    /**
     * 地方财政投入资金(万元)(资金来源)
     */
    @Schema(description = "地方财政投入资金(万元)(资金来源)")
    private BigDecimal localFunding;

    /**
     * 举办方投入资金(万元)(资金来源)
     */
    @Schema(description = "举办方投入资金(万元)(资金来源)")
    private BigDecimal organizerFunding;

    /**
     * 行业企业支持资金(万元)(资金来源)
     */
    @Schema(description = "行业企业支持资金(万元)(资金来源)")
    private BigDecimal enterpriseFunding;

    /**
     * 学校自筹资金(万元)(资金来源)
     */
    @Schema(description = "学校自筹资金(万元)(资金来源)")
    private BigDecimal schoolFunding;

    // ========== 支出经济分类部分 ==========================================

    /**
     * 商品和服务支出(万元)(支出经济分类)
     */
    @Schema(description = "商品和服务支出(万元)(支出经济分类)")
    private BigDecimal goodsServicesExpense;

    /**
     * 小计(万元)(支出经济分类)
     */
    @Schema(description = "小计(万元)(支出经济分类)")
    private BigDecimal subtotal;

    /**
     * 专用设备购置(万元)(支出经济分类)
     */
    @Schema(description = "专用设备购置(万元)(支出经济分类)")
    private BigDecimal equipmentPurchase;

    /**
     * 大型修缮(万元)(支出经济分类)
     */
    @Schema(description = "大型修缮(万元)(支出经济分类)")
    private BigDecimal majorRepair;

    /**
     * 信息网络及软件购置更新(万元)(支出经济分类)
     */
    @Schema(description = "信息网络及软件购置更新(万元)(支出经济分类)")
    private BigDecimal softwareNetworkUpdate;

    /**
     * 无形资产购置(万元)(支出经济分类)
     */
    @Schema(description = "无形资产购置(万元)(支出经济分类)")
    private BigDecimal intangibleAssets;

    /**
     * 其他资本性支出(万元)(支出经济分类)
     */
    @Schema(description = "其他资本性支出(万元)(支出经济分类)")
    private BigDecimal otherCapitalExpenses;

    /**
     * 其他支出(万元)(支出经济分类)
     */
    @Schema(description = "其他支出(万元)(支出经济分类)")
    private BigDecimal otherExpenses;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private String createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private String updateTime;

    /**
     * 是否删除(0=否,1=是)
     */
    @TableLogic
    @Schema(description = "是否删除(0=否,1=是)")
    private Integer isDeleted;
}